草庐IT

C++ 多重虚拟继承与 COM

全部标签

C# 泛型通配符或如何保存对未知泛型继承的引用

好的,情况是这样的。我有一个FlexCollection类,其目的是保存FlexItem的一些专业列表,因此:publicclassFlexCollectionwhereT:FlexItem,new(){publicvoidAdd(Titem){...}...}FlexItem不是泛型类本身。我想要实现的是能够保持FlexItem的字段是对包含该对象的集合的引用。不幸的是,在C#中,不可能保留对模板类的“任何”特化的引用(如在Java中)。起初我尝试使用非通用接口(interface)IFlexCollection但它实际上迫使我对每个方法执行两次,即:publicclassFlexC

c# - 继承的通用类型统一

对于这样的场景:publicinterfaceIAnimal{}publicinterfaceIGiraffe:IAnimal{}publicinterfaceIQuestionableCollection:IEnumerable{voidSomeAction();}publicinterfaceIQuestionableCollection:IQuestionableCollection,IEnumerablewhereT:IAnimal{}publicclassQuestionableCollection:IQuestionableCollectionwhereT:IAnimal{

c# - 如何使用 .NET UAC 提升 COM 组件

我找到了一个article关于如何通过调用提升用C++编写的COM对象CoCreateInstanceAsAdmin。但是我无法找到或做的是一种将我的.NET(c#)应用程序的组件实现为COM对象然后调用该对象以执行需要UAC提升的任务的方法。MSDN将其记录为adminCOMobjectmodel.我知道以管理员身份启动应用程序(或其他应用程序)并在单独的进程中执行任务是可能且非常容易的(例如参见postfromDanielMoth,但我正在寻找的是一种在同一个未提升的.NET可执行文件中执行所有操作的方法。这样做当然会在新进程中生成COM对象,但是由于透明编码,.NETCOM对象的

c# - 尝试反序列化从 Exception 继承的类时 Json.net 失败

我有一个继承自Exception的类SearchError,每当我尝试从有效的json中反序列化它时,我都会得到以下异常:ISerializabletype'SearchError'doesnothaveavalidconstructor.TocorrectlyimplementISerializableaconstructorthattakesSerializationInfoandStreamingContextparametersshouldbepresent.Path'',line1,position81.我尝试实现建议的缺失构造函数,但没有帮助。这是实现建议的构造函数后的类:

C# EF Code First 虚拟关键字,它有什么作用?

为什么我们在声明导航属性时需要使用“virtual”关键字?我知道CodeFirst框架以某种方式使用它来识别该属性是一个导航属性,但我想知道如何。具体来说,我想知道它与MSDN文档中针对“virtual”关键字的描述有何关系:http://msdn.microsoft.com/en-us/library/9fkccyh4(v=vs.80).aspx 最佳答案 在运行时,EntityFramework将为您生成所谓的代理实体。这些实体是派生自您的实体类型的动态创建类型的对象。这允许您将您的实体用作POCO,它是一个与EntityFr

c# - 什么时候需要/适合使用 InAttribute 和 OutAttribute 进行 COM Interop

我正在尝试检查我们分散在各个项目中的困惑的COM互操作定义,并将它们收集到一个已知良好的位置,整个开发团队都可以从中受益。这项工作的一部分涉及清理多年来积累的定义。其中一些是从其他源代码借用的,一些是从pinvoke.net逐字复制的,还有一些看起来是直接从SDKheader翻译而来的。我注意到的一件事是,在何时使用各种编码属性方面没有一致性(即使在pinvoke.net示例中,这也是非常偶然的)。部分问题是,我不认为这里的任何人(包括我自己)完全理解何时需要或不需要各种属性,或者它们实际做什么。到目前为止,在COMExceptions停止发生之前,让这些正确似乎是猜测和随机更改的结合

c# - C# 8 默认接口(interface)实现是否允许多重继承

根据https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/,C#8中的一项新功能是接口(interface)的默认实现。这个新特性是否也隐含地允许多重继承?如果不是,如果我尝试以下操作,究竟会发生什么:publicinterfaceA{intFoo()=>1;}publicinterfaceB{intFoo()=>2;}publicclassC:A,B{} 最佳答案 MadsTorgersen在您链接到的博客文章中回答了您的问题:Actuallyinter

c# - Microsoft Sync Framework COM 类错误

我一直在使用“MicrosoftSyncFramework2.1”将两个本地sqlserver2008数据库与一个asp.net项目同步。我的代码:SqlConnectionclientConn=newSqlConnection(@"Server=XXXXXX;UserID=sa;Password=xxxx;Database=ZzzClient");SqlConnectionserverConn=newSqlConnection("Server=XXXXXX;UserID=sa;Password=xxxx;Database=ZzzServer");SyncOrchestratorsyn

c# - 在关注性能时,为 DateTime.Today 使用变量有多重要?

我刚看到thisupvotedcommentIIRCDateTime.Todayisaquiteexpensivecall,soyoubetterstorethevalueinavariablefirst.这是对包含代码的帖子的回应:varfirst=newDateTime(DateTime.Today.Year,DateTime.Today.Month,1).AddMonths(-1);varlast=newDateTime(DateTime.Today.Year,DateTime.Today.Month,1).AddDays(-1);如果我希望提高性能,将DateTime.Toda

c# - 为什么我们使用虚拟和覆盖?

如果不使用override和virtual效果一样,为什么还要使用override和virtual?示例1:classBaseClass{publicvirtualstringcall(){return"A";}}classDerivedClass:BaseClass{publicoverridestringcall(){return"B";}}输出:B示例2:classBaseClass{publicstringcall(){return"A";}}classDerivedClass:BaseClass{publicstringcall(){return"B";}}输出还是一样:输出